TRANSFORM û przyk│ad instrukcji

W tym przyk│adzie klauzula TRANSFORM jΩzyka SQL jest u┐yta do utworzenia kwerendy krzy┐owej pokazuj╣cej liczbΩ zam≤wie± zebranych przez ka┐dego pracownika w ka┐dym kwartale 1994 roku. Do uruchomienia tej procedury potrzebna jest funkcja SQLTRANSFORMOutput.

Sub TransformX1()

    Dim dbs As Database

    Dim strSQL As String

    Dim qdfTRANSFORM As QueryDef

    strSQL = "PARAMETERS prmRok SHORT; TRANSFORM " _

        & "Count(NrZam≤wienia) " _

        & "SELECT ImiΩ & "" "" & Nazwisko AS " _

        & "Pe│neNazwisko FROM Pracownicy " _

        & "INNER JOIN Zam≤wienia " _

        & "ON Pracownicy.NrPracownika = " _

        & "Zam≤wienia.NrPracownika WHERE DatePart " _

        & "(""yyyy"", DataZam≤wienia) = [prmRok] "

   

       strSQL = strSQL & "GROUP BY ImiΩ & " _

        & """ "" & Nazwisko " _

        & "ORDER BY ImiΩ & "" "" & Nazwisko " _

        & "PIVOT DatePart(""q"", DataZam≤wienia)"

    

    ' Zmodyfikuj ten wiersz tak, by £cie┐ka wskazywa│a

    ' na rzeczywist╣ bazΩ danych Northwind.

    Set dbs = OpenDatabase("Northwind.mdb")

    Set qdfTRANSFORM = dbs.CreateQueryDef _

        ("", strSQL)

    

    SQLTRANSFORMOutput qdfTRANSFORM, 1994

    

    dbs.Close

End Sub

W tym przyk│adzie klauzula TRANSFORM jΩzyka SQL s│u┐y do utworzenia nieco bardziej skomplikowanej kwerendy krzy┐owej pokazuj╣cej ca│kowit╣ warto£µ zam≤wie± zebranych przez ka┐dego pracownika w ka┐dym kwartale 1994 roku. Do uruchomienia procedury potrzebna jest funkcja SQLTRANSFORMOutput.

Sub TransformX2()

    Dim dbs As Database

    Dim strSQL As String

    Dim qdfTRANSFORM As QueryDef

    strSQL = "PARAMETERS prmYear SMALLINT; TRANSFORM " _

        & "Sum(Subtotal) SELECT ImiΩ & "" """ _

        & "& Nazwisko AS Pe│neNazwisko " _

        & "FROM Pracownicy INNER JOIN " _

        & "(Zam≤wienia INNER JOIN " _

        & "[CzΩ£ciowe zam≤wienia] " _

        & "ON Zam≤wienia.NrZam≤wienia = " _

        & "[CzΩ£ciowe zam≤wienia].NrZam≤wienia) " _

        & "ON Pracownicy.NrPracownika = " _

        & "Zam≤wienia.NrPracownika WHERE DatePart" _

        & "(""yyyy"", DataZam≤wienia) = [prmRok] "

   

       strSQL = strSQL & "GROUP BY ImiΩ & "" """ _

        & "& Nazwisko " _

        & "ORDER BY ImiΩ & "" "" & Nazwisko " _

        & "PIVOT DatePart(""q"",DataZamowienia)"        

        

    ' Zmodyfikuj ten wiersz tak, by £cie┐ka wskazywa│a

    ' na rzeczywist╣ bazΩ danych Northwind.

    Set dbs = OpenDatabase("Northwind.mdb")

    Set qdfTRANSFORM = dbs.CreateQueryDef _

        ("", strSQL)

    

    SQLTRANSFORMOutput qdfTRANSFORM, 1994

    

    dbs.Close

End Sub

Function SQLTRANSFORMOutput(qdfTymcz As QueryDef, _

    intRok As Integer)

    

    Dim rstTRANSFORM As Recordset

    Dim fldPΩtla As Field

    Dim booPierwsze As Boolean

    qdfTymcz.PARAMETERS!prmRok = intRok

    Set rstTRANSFORM = qdfTymcz.OpenRecordset()

    

    Debug.Print qdfTymcz.SQL

    Debug.Print

    Debug.Print , , "Kwarta│"

    With rstTRANSFORM

        booPierwsze = True

        For Each fldPΩtla In .Fields

            If booPierwsze = True Then

                Debug.Print fldPΩtla.Name

                Debug.Print , ;

                booPierwsze = False

            Else

                Debug.Print , fldPΩtla.Name;

            End If

        Next fldPΩtla

        Debug.Print

        

        Do While Not .EOF

            booPierwsze = True

            For Each fldPΩtla In .Fields

                If booPierwsze = True Then

                    Debug.Print fldPΩtla

                    Debug.Print , ;

                    booPierwsze = False

                Else

                    Debug.Print , fldPΩtla;

                End If

            Next fldPΩtla

            Debug.Print

            .MoveNext

        Loop

    End With

    

End Function